#!/usr/bin/env ruby

LKP_SRC = ENV['LKP_SRC'] || File.dirname(File.dirname(File.dirname(File.realpath($PROGRAM_NAME))))

require "#{LKP_SRC}/lib/string"
require "#{LKP_SRC}/lib/tests/stats"

stats = LKP::Stats.new

is_divided = false

while (line = $stdin.gets)
  line = line.resolve_invalid_bytes

  case line
  when /test_bpf: #[0-9]+ (.+) jited:.+ (PASS|FAIL)$/
    type = $1.tr(' ', '_')
    stats.add type, $2 unless stats.key? type.to_s
  when /test_bpf: #[0-9]+ check: (.+) (PASS|FAIL)$/
    type = $1.tr(' ', '_')
    stats.add "check:_#{type}", $2
  when /test_bpf: #[0-9]+ (.+) (PASS|FAIL)$/
    type = $1.tr(' ', '_')
    stats.add type, $2
  when /test_bpf: #[0-9]+ check: (.+)/
    type = "check:_#{$1.strip.tr(' ', '_')}"
    is_divided = true
  when /test_bpf: #[0-9]+ (.+)/
    type = $1.strip.tr(' ', '_')
    is_divided = true
  when /(PASS|FAIL)/
    next unless is_divided

    stats.add type, $1 unless stats.key? type.to_s
    is_divided = false
  end
end

stats.dump('PASS' => 'pass', 'FAIL' => 'fail')
